package cn.tedu.file;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;

/*本类用来测试文件夹File*/
public class TestFile {
    public static void main(String[] args) throws IOException {
      //1.创建File文件对象
        /*构造函数的参数是String类型的pathname（路径名）
        * 这个路径可以是文件路径，也可以是文件夹路径
        * \在代码中有特殊的意义，所以想要真正的表示这是一个\，需要用\进行转义*/
        //注意：此处需要自己手动在D盘创建对应目录下的1.txt,并添加内容
        //注意：创建1.txt时，需要设置系统显示文件后缀名
        //注意：File需要导包
        File file = new File("D:\\ready\\1.txt");
        new FileInputStream(file);
        new FileInputStream("D:\\ready\\1.txt");


        //2.测试常用方法
        //2.1文件与文件夹属性测试
        System.out.println(file.length());//11,获取指定文件的字节量大小
        System.out.println(file.exists());//true,判断指定文件是否存在
        System.out.println(file.isFile());//true,判断指定内容是否为文件
        System.out.println(file.isDirectory());//false,判断指定内容是否为文件夹
        System.out.println(file.getName());//1.txt--获取指定内容的名字
        System.out.println(file.getParent());//D:\ready--获取指定内容的上级
        System.out.println(file.getAbsolutePath());//D:\ready\1.txt--获取指定内容的绝对路径

        //2.2创建与删除
        file = new File("D:\\ready\\2.txt");
        /*如果指定创建文件的文件夹不存在，会报错：java.io.IOException
        * 系统找不到指定的路径，由于可能会发生异常，所以调用时需要抛出异常*/
        //在Windows创建不存在的文件2.txt，成功返回true
        System.out.println(file.createNewFile());//true

        file = new File("D:\\ready\\m");//false
        //创建不存在的单层文件夹m，成功返回true
        System.out.println(file.mkdir());//true

        file = new File("D:\\ready\\a\\b\\c");
        //创建不存在的多层文件夹a\b\c，成功返回true
        System.out.println(file.mkdirs());//true

        System.out.println(file.delete());//true，c被删除，删除文件或者空文件夹
        file = new File("D:\\ready\\a");
        System.out.println(file.delete());//falsa,因为a目录里还有b目录
        file = new File("D:\\ready\\2.txt");
        System.out.println(file.delete());//true，删除2.txt文件成功

        //2.3 文件列表测试
        file = new File("D:\\ready");
        String[] listName = file.list();
        System.out.println(Arrays.toString(listName));//[1.txt, a, m]

        File[] fs = file.listFiles();
        System.out.println(Arrays.toString(fs));//[D:\ready\1.txt, D:\ready\a, D:\ready\m]
        System.out.println(fs[0].length());//11
    }
}
